class Solution(object):
    def reverseString(self, s):
        """
        :type s: List[str]
        :rtype: None Do not return anything, modify s in-place instead.
        """
        # 法一：双指针法(不要给另外的数组分配额外的空间，你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题)(原地反转)
        left, right = 0, len(s) - 1
        while left < right:
            s[left], s[right] = s[right], s[left] # 不用担心覆盖顺序问题，python中多变量同时赋值是（右边先整体取值，左边再同时赋值）
            left += 1
            right -= 1
        return s
        # # 法二：列表切片法(切片操作的时间复杂度为 O(k)，k 为切片的长度，所以这种方法的时间复杂度为 O(n))
        # return s[::-1]
        # # 法三：reversed()函数(reversed()函数返回一个迭代器，所以不能直接赋值给列表，需要先转换成列表)
        # s[:] = reversed(s[:]) # 列表切片法的简化写法
        # return s
if __name__ == '__main__':
    s = ["h","e","l","l","o"]
    print(Solution().reverseString(s))